이번엔 또 좋은 기회로 좋은 제품을 받았다.
PLAN B Solution 에서 만든 Be-Ardu328, Be-S130 두 보드이다.
Be-Ardu328은 Arduino Nano 호환 모듈이다.
Be-S130은 Arduino Nano용 쉴드로서 Data Logger 보드 이다.
SD Card와 RTC가 제작되어 있다.
물론 현재의 보드는 겉보기엔 불필요하게 커보인다.
이는 다른 보드들과 크기를 맞추기 위해서이다.
위는 보드의 실제 사진이다.
가운데 검은 바탕의 보드가 Be-Ardu328보드이다.
그리고 아래의 큰 보드가 Be-S130…
제품을 보내줄때는 헤더핀만 있었는데…
이런저런 용도로 다양하게 쓸 수 있도록 하기 위해 적층형 핀헤더를 꽂았다.
저 상태에서 점프선을 바로 꽂기도 편리하다.
보드의 간단한 소개는 여기까지…
우선 기본적으로 할 수 있는 것은 RTC가 달려 있으니 그것을 사용해보자.
DS1302가 달려 있다.
기존에는 DS1307을 사용해봐서 이녀석은 조금 다른 부분이 있다.
DS1307은 두개의 라인만 Arduino와 연결이 되었지만 DS1302는 세개의 라인이 연결되어 있다.
여러 소스들을 찾아보고 깔아보고 했지만…
시간이 출력이 되질 않는다.
ㅠㅜ
제작자분께선 그저 일반적인것 사용하면 된다고 했는데…
메뉴얼이나 기타 이러한 문서도 없다고 한다.
한참을 헤매다가…
아차~
역시 데이터쉬트를 읽지않은 나의 무지 때문에… ㅠㅜ
DS1302는 Arduino와 CE, I/O, SCLK 세개가 연결이 된다.
소스에서도
DS1302 rtc(CePin, IoPin, SclkPin);
이렇게 되어 있어서 그냥 있는 번호 그대로 따라 했다.
DS1302 rtc(5, 6, 7);
헌데 문제는…
Be-Ardu328의 D5, D6, D7은 각각 DS1302의 7Pin, 6Pin, 5Pin과 연결되어 있고
DS1302의 7Pin은 SCLK, 6Pin은 I/O, 5Pin은 CE였다.
난, 그저 기본 소스에 나와 있는 핀번호를 그대로 따라 했고 회로도 그렇게 되어 있겠지만 생각 했던 것이다.
DS1302 rtc(7, 6, 5);
라고 하니 정상적으로 잘 나온다. ㅠㅜ
이런 바보~
아래는 간단히 시간을 확인 할 수 있는 스케치이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
// DS1302.h 다운로드 // http://www.henningkarlsen.com/electronics/library.php?id=5 #include <DS1302.h> DS1302 rtc(7, 6, 5); Time t; int date_y, date_m, date_d, date_w; int time_h, time_m, time_s; String weeks[7]={"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; void setup() { rtc.halt(false); rtc.writeProtect(false); Serial.begin(9600); // 시간 설정 //rtc.setDOW(TUESDAY); // 요일(대문자) //rtc.setTime(14, 16, 0); // 시, 분, 초 //rtc.setDate(11, 11, 2010); // 월, 일, 년 } void loop() { t=rtc.getTime(); date_y=t.year; // 년 date_m=t.mon; // 월 date_d=t.date; // 일 date_w=t.dow; // 요일 time_h=t.hour; // 시 time_m=t.min; // 분 time_s=t.sec; // 초 Serial.print(date_y); Serial.print("-"); if (date_m<10) { // 월이 0~9일때 앞에 0을 추가 Serial.print("0"); } Serial.print(date_m); Serial.print("-"); if (date_d<10) { // 일이 0~9일때 앞에 0을 추가 Serial.print("0"); } Serial.print(date_d); Serial.print(" "); Serial.print(weeks[date_w]); // weeks 배열에서 영문자 가져오기 Serial.print(" "); Serial.print(time_h); Serial.print(":"); if (time_m<10) { // 시가 0~9일때 앞에 0을 추가 Serial.print("0"); } Serial.print(time_m); Serial.print(":"); if (time_s<10) { // 분이 0~9일때 앞에 0을 추가 Serial.print("0"); } Serial.print(time_s); Serial.println(""); delay (1000); } |
setup() 안에 있는
1 2 3 |
rtc.setDOW(TUESDAY); // 요일(대문자) rtc.setTime(14, 16, 0); // 시, 분, 초 rtc.setDate(11, 11, 2010); // 월, 일, 년 |
이 시간을 설정하는 부분이다.
최초에 한번 실행시키고 주석처리하면 큰 이상은 없다.
그리고 시간 설정 부분을 만들었다면 위와 같이 설정이 가능한것이다.
또 언제 시간이 날지는 모르겠지만…
빨리 이것 저것 해보고 싶다.
※ 본글에서 사용된 Arduino Nano 호환보드(Be-Ardu328), Arduino Nano Data Logger Shield(Be-S130)은 아두이노 땜방에서 제공해주었습니다. 아두이노 땜방 바로가기 Click
아..정말 감사합니다.
저도 시간이 제대로 안나와서 엄청 고생고생하다가..
핀을 1-2-3을 3-2-1로 적어서 해결하셨다는대로 했더니…되었습니다.!!!
감사합니다.
별말씀을요…
감사합니다.
잘 보고갑니다 ㅎㅎ!